// @ts-ignore
/* eslint-disable */
import request from '@/utils/request.ts'

/** 分块文件上传前的检测 分块文件上传前的检测 POST /file/checkChunk */
export async function checkChunk(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.checkChunkParams,
  options?: { [key: string]: any }
) {
  return request<API.BaseResponseBoolean>('/file/checkChunk', {
    method: 'POST',
    params: {
      ...params,
    },
    ...(options || {}),
  })
}

/** 文件上传前检查文件 文件上传前检查文件是否存在 POST /file/checkFile */
export async function checkFile(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.checkFileParams,
  options?: { [key: string]: any }
) {
  return request<API.BaseResponseBoolean>('/file/checkFile', {
    method: 'POST',
    params: {
      ...params,
    },
    ...(options || {}),
  })
}

/** 删除文件 删除文件 POST /file/deleteFile */
export async function deleteFile(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.deleteFileParams,
  options?: { [key: string]: any }
) {
  return request<API.BaseResponseBoolean>('/file/deleteFile', {
    method: 'POST',
    params: {
      ...params,
    },
    ...(options || {}),
  })
}

/** 此处后端没有提供注释 POST /file/deleteVideoById */
export async function deleteVideoById(body: API.DeleteRequest, options?: { [key: string]: any }) {
  return request<API.BaseResponseBoolean>('/file/deleteVideoById', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  })
}

/** 此处后端没有提供注释 GET /file/getMediaFileById */
export async function getMediaFileById(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.getMediaFileByIdParams,
  options?: { [key: string]: any }
) {
  return request<API.BaseResponseBizMediaFile>('/file/getMediaFileById', {
    method: 'GET',
    params: {
      ...params,
    },
    ...(options || {}),
  })
}

/** 此处后端没有提供注释 GET /file/getMediaFileList */
export async function getMediaFileList(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.getMediaFileListParams,
  options?: { [key: string]: any }
) {
  return request<API.PageResponseBizMediaFile>('/file/getMediaFileList', {
    method: 'GET',
    params: {
      ...params,
      videoPageListVo: undefined,
      ...params['videoPageListVo'],
    },
    ...(options || {}),
  })
}

/** 合并文件 合并文件 POST /file/mergeChunks */
export async function mergeChunks(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.mergeChunksParams,
  options?: { [key: string]: any }
) {
  return request<API.BaseResponse>('/file/mergeChunks', {
    method: 'POST',
    params: {
      ...params,
    },
    ...(options || {}),
  })
}

/** 上传分块文件 用于大文件分块上传，需提供文件块、文件MD5和块序号 POST /file/uploadChunk */
export async function uploadChunk(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.uploadChunkParams,
  body: {},
  options?: { [key: string]: any }
) {
  return request<API.BaseResponse>('/file/uploadChunk', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    params: {
      ...params,
    },
    data: body,
    ...(options || {}),
  })
}

/** 上传文档 上传文档 POST /file/uploadDoc */
export async function uploadDoc(body: {}, file?: File, options?: { [key: string]: any }) {
  const formData = new FormData()

  if (file) {
    formData.append('file', file)
  }

  Object.keys(body).forEach((ele) => {
    const item = (body as any)[ele]

    if (item !== undefined && item !== null) {
      if (typeof item === 'object' && !(item instanceof File)) {
        if (item instanceof Array) {
          item.forEach((f) => formData.append(ele, f || ''))
        } else {
          formData.append(ele, JSON.stringify(item))
        }
      } else {
        formData.append(ele, item)
      }
    }
  })

  return request<API.BaseResponseUploadFileResultDto>('/file/uploadDoc', {
    method: 'POST',
    data: formData,
    requestType: 'form',
    ...(options || {}),
  })
}

/** 上传图片 上传图片接口 POST /file/uploadPic */
export async function uploadPic(body: {}, file?: File, options?: { [key: string]: any }) {
  const formData = new FormData()

  if (file) {
    formData.append('file', file)
  }

  Object.keys(body).forEach((ele) => {
    const item = (body as any)[ele]

    if (item !== undefined && item !== null) {
      if (typeof item === 'object' && !(item instanceof File)) {
        if (item instanceof Array) {
          item.forEach((f) => formData.append(ele, f || ''))
        } else {
          formData.append(ele, JSON.stringify(item))
        }
      } else {
        formData.append(ele, item)
      }
    }
  })

  return request<API.BaseResponseUploadFileResultDto>('/file/uploadPic', {
    method: 'POST',
    data: formData,
    requestType: 'form',
    ...(options || {}),
  })
}
